﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Obligatorio1.Modelo;
using Obligatorio1.Controladores;

namespace Obligatorio1
{
    class ManejadorTelefono
    {
        private static ManejadorTelefono manejador = null;

        public static ManejadorTelefono getInstance()
        {
            if (manejador == null)
            { manejador = new ManejadorTelefono(); }
            return manejador;
        }

        public void agregarTelefono(Telefono t)
        {
            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
            oe.Telefono.AddObject(t);
            oe.SaveChanges();
        }

        public void borrarTelefono(Telefono t) 
        {
            try 
            {
                Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
                oe.Telefono.DeleteObject(t);
                oe.SaveChanges();
            }
            catch (Exception e) { Console.WriteLine(e.Message); }
            
        }

        public List<Telefono> listar() 
        {
            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();
            var ts = from t in oe.Telefono
                           select t;
            return ts.ToList(); 
        }

        public string exportar(char separador, int idPersona)
        {
            String exp = "";

            Obligatorio1Entities oe = GestorModelo.getInstance().getModelo();

            var telPersona = from Telefono d in oe.Telefono.DefaultIfEmpty()
                                     where (d.idPersona == idPersona)
                                     select d;

          
            foreach (var t in telPersona)
            {
                exp += separador + t.numero.ToString() + separador + t.tipo;
            }            
            return exp;            
        }

        internal bool Igual(Telefono tel, Telefono t)
        {
            return tel.idPersona == t.idPersona && tel.numero.Equals(t.numero);
        }
    }   
}
